package com.jxl;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.Date;
import java.util.Random;

import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.write.Number;
import jxl.write.WritableImage;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;

public class CreateXL {
	public CreateXL() {

	}

	public static void main(String[] args) {
		// 创建新的Excel
		CreateXL.writeExcel("F:\\MYDOCUMENT\\new.xls");

		// 读Excel
		// CreateXL.readExcel("F:\\MYDOCUMENT\\new.xls");

		// 更新Excel
		// CreateXL.updateExcel("F:\\MYDOCUMENT\\new.xls");

	}

	public static void writeExcel(String filePath) {
		try {
			// 创建工作薄
			WritableWorkbook wwb = Workbook.createWorkbook(new File(filePath));

			// 创建工作表
			WritableSheet ws = wwb.createSheet("Sheet1", 0);

			
			for (int x = 0 ; x < 100 ; x++)
			{
				ws.addCell(new Number(x,x,x*2)) ;
			}
			for (int x = 0 ; x < 10 ; x++)
			{
				ws.addCell(new Number(x,x,x*5)) ;
			}
			
			// 添加标签文本
			Random rnd = new Random((new Date()).getTime());
			int forNumber = rnd.nextInt(100);
			for (int i = 0; i < forNumber; i++) {
				ws.addCell(new Number(rnd.nextInt(50), rnd.nextInt(50), rnd.nextInt(1000)));
			}

			// 添加图片(注意此处jxl暂时只支持png格式的图片)
			// 0,9分别代表x,y     3,5代表宽和高占的单元格数
			ws.addImage(new WritableImage(0, 9, 3, 5, new File("F:\\MYDOCUMENT\\My Pictures\\MSNShell\\gift.png")));

			wwb.write();
			wwb.close();
		} catch (Exception e) {
			System.out.println(e.toString());
		}
	}

	public static void readExcel(String filePath) {
		/**
		 *后续考虑问题,比如Excel里面的图片以及其他数据类型的读取
		 **/
		try {
			InputStream is = new FileInputStream(filePath);
			// 声名一个工作薄
			Workbook rwb = Workbook.getWorkbook(is);

			// 获得工作薄的个数
			// rwb.getNumberOfSheets();

			// 在Excel文档中，第一张工作表的缺省索引是0
			Sheet st = rwb.getSheet("Sheet1");

			// 通用的获取cell值的方式,getCell(int column, int row) 行和列
			int Rows = st.getRows();
			int Cols = st.getColumns();
			System.out.println("当前工作表的名字:" + st.getName());
			System.out.println("总行数:" + Rows);
			System.out.println("总列数:" + Cols);

			Cell c;
			for (int i = 0; i < Cols; ++i) {
				for (int j = 0; j < Rows; ++j) {
					// getCell(Col,Row)获得单元格的值
					System.out.print((st.getCell(i, j)).getContents() + "\t");
				}
				System.out.print("\n");
			}
			// 操作完成，释放
			rwb.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}
